package com.ck.ips.service;

import com.ck.common.model.DeviceGroup;
import com.ck.common.model.OperationResult;
import com.ck.ips.model.vo.TreeHierarchyVO;

import java.util.List;

/**
* @Description: 设备分组 service
* @Author: hf
* @Date:    2019/5/8 9:53
* @Version: 1.0
*/
public interface DeviceGroupService {

    /**
     * 保存终端分组
     *
     * @param deviceGroup DeviceGroup类型对象
     */
    OperationResult saveDeviceGroup(DeviceGroup deviceGroup);

    /**
     * 更新终端分组
     *
     * @param deviceGroup DeviceGroup类型对象
     */
    OperationResult updateDeviceGroup(DeviceGroup deviceGroup);

    /**
     * 获取终端分组
     *
     * @param deviceGroupId 终端分组ID
     */
    DeviceGroup getDeviceGroup( Long deviceGroupId);

    /**
     * 删除终端分组
     *
     * @param deviceGroupId 终端分组ID
     */
    OperationResult deleteDeviceGroup(Long deviceGroupId);

    /**
     * 通过父ID获取终端分组列表
     *
     * @param parentId    父ID
     * @return List<DeviceGroup>
     */
    List<DeviceGroup> listDeviceGroupByParentId(Long parentId);

    /**
     * 所有终端树形分组列表
     *
     * @return List<DeviceGroupTreeHierarchyVO>
     * @param resolvingPower
     */
    List listAllDeviceGroupTree(String resolvingPower);

    /**
     * 获取当前用户的设备分组id集合
     *
     * @return List<String>
     */
    List<String> findUserDeviceGroupId();

    /**
     * 移动终端到分组
     *
     * @param deviceGroupId 分组ID
     * @param deviceCodes   终端code，多个用逗号分隔
     */
    OperationResult moveDeviceGroup(Long deviceGroupId, String deviceCodes);

    /**
     * 生成某个角色的终端分组树
     * @param roleId
     * @return
     */
    List<TreeHierarchyVO> deviceGroupTreeByRole(Long roleId);
}
